package com.liukai.bishe.ui.fragment;

import android.content.Context;
import android.graphics.Color;
import android.text.SpannableString;
import android.text.style.RelativeSizeSpan;
import android.view.View;

import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.liukai.bishe.R;
import com.liukai.bishe.utils.Constants;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;

public class AnalysisFragment extends BaseFragment {

    private Context mContext;

    @BindView(R.id.Big_linePieView)
    public PieChart mPieChart;

    @Override
    protected Context getFragmentContext(View view) {
        mContext = view.getContext();
        return null;
    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment_analysis;
    }

    @Override
    protected void initView(View view) {
        super.initView(view);
//        mChart.getDescription().setEnabled(false);    //设置pieChart图表的描述
//        mChart.setBackgroundColor(Color.WHITE);      //设置pieChart图表背景色
//        mChart.setUsePercentValues(true); // 显示为百分比
////        mChart.setUsePercentValues(false);
//        mChart.setRotationEnabled(true);//可以手动旋转
//        mChart.setDragDecelerationFrictionCoef(0.95f);//设置pieChart图表转动阻力摩擦系数[0,1]
//        mChart.setHighlightPerTapEnabled(true);       //设置piecahrt图表点击Item高亮是否可用
//        mChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);// 设置pieChart图表展示动画效果
//        mChart.setExtraOffsets(0f,32f,0f,32f);
//        Legend l = mChart.getLegend();
//        l.setEnabled(true);                    //是否启用图列（true：下面属性才有意义
////        l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
////        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
//        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
//        l.setForm(Legend.LegendForm.SQUARE); //设置图例的形状
//        l.setFormSize(10);                      //设置图例的大小
//        l.setFormToTextSpace(10f);              //设置每个图例实体中标签和形状之间的间距
//        l.setDrawInside(false);
//        l.setWordWrapEnabled(true);              //设置图列换行(注意使用影响性能,仅适用legend位于图表下面)
//        l.setXEntrySpace(10f);                  //设置图例实体之间延X轴的间距（setOrientation = HORIZONTAL有效）
//        l.setYEntrySpace(8f);                  //设置图例实体之间延Y轴的间距（setOrientation = VERTICAL 有效）
//        l.setYOffset(50f);                      //设置比例块Y轴偏移量
//        l.setXOffset(10f);
//        l.setTextSize(14f);                      //设置图例标签文本的大小
//        l.setTextColor(Color.parseColor("#333333"));//设置图例标签文本的颜色
//
//        List<PieEntry> strings = new ArrayList<>();
//        strings.add(new PieEntry(10f,"aaa1"));
//        strings.add(new PieEntry(20f,"bbb1"));
//        strings.add(new PieEntry(30f,"aaa2"));
//        strings.add(new PieEntry(30f,"bbb2"));
//        strings.add(new PieEntry(10f,"aaa3"));
//
//        List<Entry> entries = new ArrayList<>();
//        entries.add(new Entry(10,100));
//        entries.add(new Entry(10,100));
//        entries.add(new Entry(30,100));
//        entries.add(new Entry(30,100));
//        entries.add(new Entry(20,100));
//
//
//        PieDataSet dataSet = new PieDataSet(strings,"");
//
//        ArrayList<Integer> colors = new ArrayList<Integer>();
//        colors.add(getResources().getColor(R.color.deep_red));
//        colors.add(getResources().getColor(R.color.grey));
//        colors.add(getResources().getColor(R.color.deep_red));
//        colors.add(getResources().getColor(R.color.grey));
//        colors.add(getResources().getColor(R.color.deep_red));
//        colors.add(getResources().getColor(R.color.grey));
//        colors.add(getResources().getColor(R.color.deep_red));
//        colors.add(getResources().getColor(R.color.grey));
//        dataSet.setColors(colors);
//
//        String descriptionStr = "平台上有违章车辆和没违章车辆的占比统计";
//        Description description = new Description();
//        description.setText(descriptionStr);
//        mChart.setDescription(description);
//
//
//        PieData pieData = new PieData(dataSet);
//        pieData.setDrawValues(true);
//        pieData.setValueTextSize(12f);
//
//
//
//        mChart.setData(pieData);
//        mChart.invalidate();

        //饼状图
//        mPieChart = (PieChart) findViewById(R.id.mPieChart);
        mPieChart.setUsePercentValues(true);
        mPieChart.setDrawSliceText(false);
        mPieChart.getDescription().setEnabled(false);
        mPieChart.setExtraOffsets(5, 10, 5, 5);

        mPieChart.setDragDecelerationFrictionCoef(0.95f);

        //设置中间文字
        mPieChart.setDrawCenterText(true);//是否绘制中间的文字
        mPieChart.setCenterText(generateCenterSpannableText());
        mPieChart.setCenterTextSize(10f);

        mPieChart.setDrawHoleEnabled(true);
        mPieChart.setHoleColor(Color.WHITE);

        mPieChart.setTransparentCircleColor(Color.WHITE);
        mPieChart.setTransparentCircleAlpha(110);

        mPieChart.setHoleRadius(38f);
        mPieChart.setTransparentCircleRadius(41f);

        mPieChart.setDrawCenterText(true);

        mPieChart.setRotationAngle(0);
        // 触摸旋转
        mPieChart.setRotationEnabled(true);
        mPieChart.setHighlightPerTapEnabled(true);

        //变化监听
//        mPieChart.setOnChartValueSelectedListener(this);
        //模拟数据
        List<PieEntry> entries = Constants.getPieEntryList();

        //设置数据
       setData(entries);
        mPieChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);

        Legend l = mPieChart.getLegend();
        l.setEnabled(true);                    //是否启用图列（true：下面属性才有意义
//        l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
//        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(false);
        l.setWordWrapEnabled(true);
        l.setXEntrySpace(10f);                  //设置图例实体之间延X轴的间距（setOrientation = HORIZONTAL有效）
        l.setYEntrySpace(8f);                  //设置图例实体之间延Y轴的间距（setOrientation = VERTICAL 有效）
        l.setYOffset(50f);                      //设置比例块Y轴偏移量
        l.setXOffset(10f);
        l.setTextSize(14f);

//        String descriptionStr = "总执行时间统计表";
//        Description description = new Description();
//        description.setText(descriptionStr);
//        description.setPosition();
//        mPieChart.setDescription(description);

        // 输入标签样式
        mPieChart.setEntryLabelColor(Color.WHITE);
        mPieChart.setEntryLabelTextSize(12f);
        //设置数据

    }

    private void setData (List < PieEntry > entries) {
        PieDataSet dataSet = new PieDataSet(entries, "");
        dataSet.setSliceSpace(3f);
        dataSet.setSelectionShift(5f);

        //数据和颜色
        ArrayList<Integer> colors = new ArrayList<Integer>();
        for (int c : ColorTemplate.VORDIPLOM_COLORS)
            colors.add(c);
        for (int c : ColorTemplate.JOYFUL_COLORS)
            colors.add(c);
        for (int c : ColorTemplate.COLORFUL_COLORS)
            colors.add(c);
        for (int c : ColorTemplate.LIBERTY_COLORS)
            colors.add(c);
        for (int c : ColorTemplate.PASTEL_COLORS)
            colors.add(c);
        colors.add(ColorTemplate.getHoloBlue());
        dataSet.setColors(colors);
        PieData data = new PieData(dataSet);
        data.setValueFormatter(new PercentFormatter());
        data.setValueTextSize(11f);
        data.setValueTextColor(Color.WHITE);
        mPieChart.setData(data);
        mPieChart.highlightValues(null);
        //刷新
        mPieChart.invalidate();
    }

    //设置中间文字
    private SpannableString generateCenterSpannableText() {
        //原文：MPAndroidChart\ndeveloped by Philipp Jahoda
        SpannableString s = new SpannableString("任务执行\n统计表");
        s.setSpan(new RelativeSizeSpan(1.7f), 0, 4, 0);
//        s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0);
//         s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
        s.setSpan(new RelativeSizeSpan(1f), 4, 8, 0);
        // s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
        // s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
        return s;
    }

    @Override
    protected void initListener() {
        super.initListener();
    }
}
